﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CP.BE;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;

namespace CP.DAO
{
   public class CLIENTEDAO:ICLIENTEDAO
    {
        ConnectionStringSettings settings = ConfigurationManager.ConnectionStrings["caprs"];

        public void RegistarCliente(CLIENTEBE cliente)
        {


            using (SqlConnection conn = new SqlConnection(settings.ConnectionString))
            {

                conn.Open();
                SqlCommand comando = new SqlCommand("INSERT INTO Cliente (nombre_cliente, apellido_cliente, dni_cliente, fechaNacimiento_cliente, sexo_cliente) VALUES (@nombre,@apellido,@dni,@fechanacimiento,@sexo)", conn);
                comando.Parameters.AddWithValue("@nombre", cliente.nombres);
                comando.Parameters.AddWithValue("@apellido", cliente.apellidos);
                comando.Parameters.AddWithValue("@dni", cliente.dni);
                comando.Parameters.AddWithValue("@fechanacimiento", cliente.fechaNac);
                comando.Parameters.AddWithValue("@sexo", cliente.sexo);
                comando.ExecuteNonQuery();


            }

        }

        public List<CLIENTEBE> Listadeclientes()
        {
            List<CLIENTEBE> lista = new List<CLIENTEBE>();


            using (SqlConnection conn = new SqlConnection(settings.ConnectionString))
            {
                conn.Open();

                SqlCommand cmd = new SqlCommand("ListaClientes", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlDataReader lee = cmd.ExecuteReader();

                if (lee.HasRows)
                {
                    while (lee.Read())

                        lista.Add(new CLIENTEBE(lee.GetInt32(0), lee.GetString(1), lee.GetString(2), lee.GetString(3), lee.GetDateTime(4), lee.GetString(5)));

                }
                lee.Close();

            }

            return lista;
        }

        public void UpdateCliente(CLIENTEBE cliente)
        {
            using (SqlConnection conn = new SqlConnection(settings.ConnectionString))
            {

                conn.Open();
                SqlCommand comando = new SqlCommand("UPDATE    Cliente SET  nombre_cliente = @nombre, apellido_cliente = @apellido, dni_cliente = @dni, fechaNacimiento_cliente = @fecha, sexo_cliente = @sexo where id_cliente=@idcliente", conn);

                comando.Parameters.AddWithValue("@idcliente", cliente.codigo);
                comando.Parameters.AddWithValue("@nombre", cliente.nombres);
                comando.Parameters.AddWithValue("@apellido", cliente.apellidos);
                comando.Parameters.AddWithValue("@dni", cliente.dni);
                comando.Parameters.AddWithValue("@fecha", cliente.fechaNac);
                comando.Parameters.AddWithValue("@sexo", cliente.sexo);
                comando.ExecuteNonQuery();


            }
        }

        public void DeleteCliente(CLIENTEBE cliente)
        {
            using (SqlConnection conn = new SqlConnection(settings.ConnectionString))
            {

                conn.Open();
                SqlCommand comando = new SqlCommand("DELETE FROM Cliente where id_cliente=@idcliente", conn);

                comando.Parameters.AddWithValue("@idcliente", cliente.codigo);

                comando.ExecuteNonQuery();


            }
        }
    }
}
